查看原文
其他

软件应用 | 如何随机生成满足特定数据特征的新变量?

数据Seminar 2022-12-31

The following article is from Stata and Python数据分析 Author 爬虫俱乐部

本文转载自公众号Stata and Python数据分析

作者:赵一帆,中南财经政法大学金融学院

导读

在我们日常科研工作或者写论文的过程中,通常会使用自己从各大数据库和网站等搜集整理的数据,但是诸位是否知道如何快速生成满足特定数据结构的变量呢?今天我们就来介绍Stata中的两个创建其他变量的小命令——corr2data命令&drawnorm命令。这两个命令可以实现哪些功能,又有什么区别呢?下面我们来一起看看吧~

corr2data命令介绍

首先我们来看看corr2data命令,它的全称是 Create dataset with specified correlation structure,我们可以使用这个命令生成具有指定数据结构的数据集。另外,它属于内部命令,不需要进行下载即可使用。

命令语法

corr2data newvarlist [, options]

选项介绍

Options

  1. clear:清除之前的数据集。

  2. double:表示生成的变量类型是双精度浮点型,表示数据的时候比较准确一些。默认选项是单精度的数据类型(float)。

  3. n(#):表示生成观测值的数量,默认是当前的数量。

  4. sds(vector):表示生成变量的标准差。

  5. corr(matrix|vector):表示生成变量的相关系数矩阵,默认为正交数据。

  6. cov(matrix|vector):表示生成变量的协方差矩阵,默认为正交数据。

  7. cstorage(full):表示生成变量的相关矩阵或协方差矩阵的结构是一个对称的k*k矩阵。

  8. cstorage(lower):表示生成变量的相关矩阵或协方差矩阵的结构是一个下三角矩阵。

  9. cstorage(upper):表示生成变量的相关矩阵或协方差矩阵的结构是为一个上三角矩阵。

  10. forcepsd:要求生成变量的协方差/相关矩阵为正定或半正定矩阵。

  11. means(vector):表示生成变量的均值;默认是意味着(0)

  12. seed(#):种子随机数生成器

注意:

(1)选项sds()不能与cov()一起指定。

(2)如果没有指定corr()cov()选项,默认为正交数据。

(3)cstorage (full|lower|upper)的作用是指定corr()cov()中相关矩阵或协方差矩阵结构的存储模式。支持以下存储方式:full指定相关矩阵或协方差矩阵为一个对称的k*k矩阵;lower指定相关矩阵或协方差矩阵为下三角矩阵;upper指定相关矩阵或协方差矩阵为上三角矩阵。

drawnorm命令介绍

我们再来看看drawnorm命令,它的全称是Draw sample from multivariate normal distribution,即我们可以从指定的多元正态分布中抽取样本。

命令语法

drawnorm newvarlist [, options]

选项介绍

与corr2data命令的选项一致,在此不作赘述。

案例分析

上面我们分别介绍了corr2data和drawnorm命令,它们似乎都与创建一个新的变量数据有关,那我们应该如何区分然后正确使用呢?

如果是要产生一个具有指定数据结构的总体——使用corr2data命令

比如我们需要产生一个有1000个观测值的总体,其两变量x和y的均值分别为2和3,标准差分别为1和2,变量x与y的相关系数矩阵为(1 0.2\0.2 1), 并把相关系数矩阵设置为一个对称的k*k矩阵,则命令为:

clear
corr2data x y, clear n(1000) means(2 3) sds(1 2) corr(1 0.2\0.2 1) cstorage(full)  //生成具有指定数据结构的变量
sum               //描述性统计分析      
pwcorr x y, sig   //显示变量间的相关系数

运行结果为:

这时,就生成了含有x和y变量的数据集,而且如上图所示,两个变量的观测值均为1000,均值分别为2和3,标准差分别为1和2。

同时,两个变量间的相关系数矩阵为(1 0.2\0.2 1) 。

如果从一个给定的正态总体中抽取一个有1000个观测值的样本——使用drawnorm命令

举个例子,已知总体数据是呈现正态分布,两变量x和y的均值分别为2和3,标准差分别为1和2,且这两变量的相关系数矩阵为(1 0.2\0.2 1),并把相关系数矩阵设置为一个对称的k*k矩阵, 则具体代码为:

clear
drawnorm x y, n(1000) means(2 3) sds(1 3) corr(1 0.2\0.2 1) cstorage(full) //从正态总体中抽取有1000个观测值的样本
sum          //描述性统计分析
pwcorr x y, sig   //显示变量间的相关系数

运行结果为:

如图所示,我们的观测值样本均值为1.994498和2.91034;标准差分别为1.016045和2.991129。

如图所示,两个变量的相关系数矩阵为(1 0.2138\0.2138  1)。

我们发现:观测值的均值、标准差和相关系数等统计特征与正态总体的接近但不完全等于,因为这1000个观测值是从这个正态总体随机抽取的样本。

以上就是今天对于corr2data和drawnorm命令的介绍啦,大家快动手试一试呀!







星标⭐我们不迷路!
想要文章及时到,文末“在看”少不了!

点击搜索你感兴趣的内容吧


往期推荐


软件应用 | 用STATA做GMM估计:过程与代码

软件应用 | Stata 17的新功能(二):使用Wild Cluster Bootstrap估计DID的标准误

软件应用 | Stata 17的新功能(一):双重差分法(DID)的官方命令

软件应用 | 资料整理利器!Python 提取 PDF 指定内容生成新文件

推荐 | 邱泽奇:大数据给社会学研究带来了什么挑战?

统计计量 | 统计学中常用的数据分析方法汇总

统计计量 | 34本经济学经典著作选读书单推荐







数据Seminar




这里是大数据、分析技术与学术研究的三叉路口


推荐 | 郑泽青

    欢迎扫描👇二维码添加关注    

点击下方“阅读全文”了解更多

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存